//package com.wangfei.test.filehandler;
//
//
//import com.wangfei.test.filehandler.access.IStringReplace;
//import com.wangfei.test.filehandler.impl.ReplacehandleStrategyFactory;
//import org.apache.poi.ss.usermodel.*;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.*;
//import java.text.DecimalFormat;
//import java.util.regex.Matcher;
//
//public class ExcelExact {
//    public static final String IN_FILE = "/Users/wangfei/IdeaProjects/demo/src/main/resources/20200918.xlsx";
//    public static final String OUT_FILE = "/Users/wangfei/IdeaProjects/demo/src/main/resources/20200918_copy.xlsx";
//
//    public static Logger logger = LoggerFactory.getLogger(ExcelExact.class);
//
//    public static void main(String[] args) {
//        //xlsx file path
//        String inputFileName = IN_FILE;
//        // File stream
//        File file = new File(inputFileName);
//
//        Sheet sheet = null;
//        try (FileInputStream fis = new FileInputStream(file);
//            // creat XSSFWorkbook object for xlsx
//            XSSFWorkbook workbook = new XSSFWorkbook(fis);){
//            // get first sheet in the xlsx
//            sheet = workbook.getSheetAt(0);
//            // get the number of rows in the sheet
//            int rows = sheet.getPhysicalNumberOfRows();
//            // iterat the rows
//
//            Matcher matcher = null;
//            for(int i = 0; i < rows; i++) {
//                Row row = sheet.getRow(i);
//                int columns = row.getPhysicalNumberOfCells();
//                for(int j = 0; j < columns; j++) {
//                    String cellData = (String)getCellFormatValue(row.getCell(j));
//                    logger.debug(cellData);
//
//                    IStringReplace iStringReplace = null;
//                    String tmpData = cellData;
//                    for (Type t : Type.values()){
//                        logger.debug(t.getIndex() + "");
//                        iStringReplace = ReplacehandleStrategyFactory.getStrategy(t.getIndex());
//                        tmpData = iStringReplace.replace(tmpData);
//                        logger.debug(tmpData);
//                    }
//
//
//                    row.getCell(j).setCellValue(tmpData);
//                }
//                workbook.setSheetName(0, StrEnum.NUMERICVAL.getValue());
//                try(FileOutputStream fos =
//                            new FileOutputStream(
//                                    new File(OUT_FILE));){
//                    workbook.write(fos);
//                }
//            }
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//    public static Object getCellFormatValue(Cell cell){
//        if (cell == null) {
//            return "wrong cell object";
//        }
//        Object cellData = null;
//        CellType cellType = cell.getCellType();
//        switch (cellType) {
//            case NUMERIC:
//                cellData = cell.getNumericCellValue();
//                DecimalFormat df = new DecimalFormat();
//                cellData = df.format(cellData);
//                break;
//            case STRING:
//                cellData = cell.getStringCellValue();
//                break;
//            case FORMULA:
//                if (DateUtil.isCellDateFormatted(cell)){
//                    cellData = cell.getDateCellValue();
//                } else {
//                    cellData = String.valueOf(cell.getNumericCellValue());
//                }
//                break;
//                default:
//                    cellData = "";
//        }
//        return cellData;
//    }
//}